import { defineStore } from 'pinia';
import { systemInit } from '@/api/system';
import { getModelStore, getUserStore } from '@/utils/storeHelper';

interface SystemState {
  initialized: boolean;
  modelSelect: boolean;
  samples: string[];
  defaultModelId?: string; // 添加默认模型ID状态
  cookiePre?: string; // 添加cookie前缀状态
  tools?: { name: string; id: number }[]; // 新增工具列表状态
}

export const useSystemStore = defineStore('system', {
  state: (): SystemState => ({
    initialized: false,
    modelSelect: false,
    samples: [],
    defaultModelId: undefined,
    cookiePre: undefined,
    tools: [], // 初始化工具列表
  }),

  actions: {
    async initSystem() {
      try {
        const result = await systemInit();

        if (result.code === 200) {
          // 更新系统状态
          this.initialized = true;
          this.modelSelect = result.data.model_select;
          this.samples = result.data.samples || [];
          // 保存默认模型ID
          this.defaultModelId = result.data.default_model_id;
          // 保存cookie前缀
          this.cookiePre = result.data.cookie_pre;
          // 保存工具列表
          this.tools = result.data.tools || [];

          // 延迟导入相关 store 以避免循环依赖
          const userStore = await getUserStore();
          const modelStore = await getModelStore();
          if (result.data.user && result.data.user.id) {
            userStore.setUserInfo(result.data.user);
            // 设置一个默认的token来表示用户已登录
            userStore.setToken('default_token');
          }
          else {
            // 如果没有有效的用户信息，清除登录状态
            userStore.clearToken();
            userStore.clearUserInfo();
          }

          // 获取模型列表并设置默认模型
          await modelStore.requestModelList();

          // 更新模型选择状态
          modelStore.setModelSelect(result.data.model_select);

          // 根据默认模型ID设置当前模型
          if (this.defaultModelId && modelStore.modelList.length > 0) {
            const defaultModel = modelStore.modelList.find(
              model => model.id === this.defaultModelId,
            );
            if (defaultModel) {
              modelStore.setCurrentModelInfo(defaultModel);
            }
            else if (modelStore.modelList.length > 0) {
              // 如果没有找到匹配的默认模型，则选择第一个模型
              modelStore.setCurrentModelInfo(modelStore.modelList[0]);
            }
          }
          else if (modelStore.modelList.length > 0) {
            // 如果没有默认模型ID，则选择第一个模型
            modelStore.setCurrentModelInfo(modelStore.modelList[0]);
          }

          return result;
        }
        else {
          throw new Error(result.message || '系统初始化失败');
        }
      }
      catch (error) {
        throw error;
      }
    },
  },
});
